/**
 * File: categoriaProdutoMB.java
 * Data: 02.12.2010
 * Objective: Criar a classe managed bean da entidade Categoria Produto.
 *
 * Copyright 2010 S2DZ CORPORATION
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package mbeans;

import controller.StockController;
import java.io.Serializable;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import modelo.StockModelo;

/**
 * Managed Bean da entidade Categoria Produto.
 * @author Paulo Ilenga
 */
@ManagedBean
@SessionScoped
public class StockMB implements Serializable
{

    private StockController controller;
    private StockModelo modelo, modeloTemp;
    private StockModelo[] seleccionados;
    private FacesContext context;

    /** Constructor da classe sem argumentos */
    public StockMB()
    {
        controller = new StockController();
        modelo = new StockModelo();
        modeloTemp = new StockModelo();
    }

//------------------------inicio dos Métodos set e get---------------------------------
    public StockController getController()
    {
        return controller;
    }

    public void setController(StockController controller)
    {
        this.controller = controller;
    }

    public StockModelo getModelo()
    {
        return modelo;
    }

    public void setModelo(StockModelo modelo)
    {
        this.modelo = modelo;
    }

    public StockModelo getModeloTemp()
    {
        if (modeloTemp != null)
        {

            StockModelo sm = controller.getByCampo("id", String.valueOf(modeloTemp.getId()));

            if (sm != null & modeloTemp.getQuantidade()==0)
            {
                modeloTemp.setQuantidade(sm.getQuantidade());
                modeloTemp.setLimite(sm.getLimite());
            }

        }
        return modeloTemp;
    }

    public void setModeloTemp(StockModelo modeloTemp)
    {
        this.modeloTemp = modeloTemp;
    }

    public List<StockModelo> getTodos()
    {
        return controller.getTodosComLigacao();
    }

    public StockModelo[] getSeleccionados()
    {
        return seleccionados;
    }

    public void setSeleccionados(StockModelo[] seleccionados)
    {
        this.seleccionados = seleccionados;
    }

    //-----------------------fim dos métodos set e get------------------------------
    /**
     * Método salvar da classe
     */
    /*public void salvar()
    {
    context = FacesContext.getCurrentInstance();

    if (!modelo.getNome().equals(""))
    {
    if (controller.save(modelo))
    {
    modelo = new StockModelo();
    context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "GCBoutique", "Registo Guardado Com Sucesso!"));
    } else
    {
    context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "GCBoutique", "Erro N.º SG001: Ao Guardar o Registo! Consulte o Suporte"));
    }
    } else
    {
    context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, "GCBoutique", "Aviso N.º UG002: Deve Preencher o Nome!"));
    }

    //System.err.println("Nome: " + modelo.getNome());
    }*/
    /**
     * Método que actualiza os dados do registo.
     * @param o evento gerado pela página.
     */
    public void actualizar(ActionEvent event)
    {
        context = FacesContext.getCurrentInstance();

        if (modeloTemp.getId() != 0)
        {
            //modeloTemp.setQuantidade(modeloTemp.getQuantidade());
            //modeloTemp.setCusto( modeloTemp.getPreco() + modeloTemp.getImposto() );

            modeloTemp.setValor(modeloTemp.getQuantidade() * modeloTemp.getCusto());

            if (controller.update(modeloTemp))
            {
                context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "GCBoutique", "Registo Actualizado Com Sucesso!"));
            } else
            {
                context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "GCBoutique", "Erro N.º SA001: Ao Actualizado o Registo! Consulte o Suporte."));
            }

        } else
        {
            context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, "GCBoutique", "Aviso N.º UA002: Deve Seleccioar um Registo!"));
        }
    }

    /**
     * Método que elimina os dados do registo.
     * @param o evento gerado pela página.
     */
    /*public void eliminar(ActionEvent event)
    {
    context = FacesContext.getCurrentInstance();


    if (modeloTemp.getId() != 0)
    {
    if (!modeloTemp.getNome().equals(""))
    {
    if (controller.eliminar(modeloTemp.getId(), "tbl_categoria_produto"))
    {
    modeloTemp = new StockModelo();
    context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "GCBoutique", "Registo Elimidado Com Sucesso!"));
    } else
    {
    context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "GCBoutique", "Erro N.º SE001: Ao eliminar o Registo! Consultar o Suporte"));
    }
    } else
    {
    context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, "GCBoutique", "Aviso N.º UE001: Deve Seleccionar um registo!"));
    }
    } else
    {
    context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, "GCBoutique", "Erro Aviso N.º UE001: Deve Seleccionar um registo."));
    }
    }*/
    /**
     * Método que limpa os atributos da entidade.


    /**
     * Métodos que cria uma nova instância do objecto modelo.
     */
    public void novoModelo()
    {
        modeloTemp = new StockModelo();
    }
}
